﻿//Copyright (C) <2013>  <jonathan cleeve norton> All Rights Reserved 
//Contact jon.norton@fin-plus.co.uk website <http://www.fin-plus.co.uk/>
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Dynamic;

namespace FinPlusCommon
{
    public interface IFinPlusFuncDynamic : INotifyPropertyChanged
    {
        event PropertyChangedEventHandler PropertyColumn;

        bool TryGetMember(GetMemberBinder binder, out object result);

        bool TrySetMember(SetMemberBinder binder, object value);

        IEnumerable<string> GetDynamicMemberNames();

        IFunction ToFunction();

        void SetValue(string name, object value, string user, DateTime timeStamp);

        void SetItem(IItem item);

        void AddColumn(IItem item);

        object GetValue(string name);

        DateTime GetTimeStamp(string name);

        string GetType(string name);

        bool TryGetObject(string name, out object value);

        bool HasObject(string name, object value);

        bool ContainsObject(string name, object value);

        IDictionary<DateTime, object> GetDateSeries();

        string ToString();
    }
}
